package clinsistem.c.repositorio;

import java.sql.ResultSet;
import java.sql.Statement;
import java.util.LinkedList;

import clinsistem.b.negocio.entidades.Convenio;
import clinsistem.b.negocio.entidades.Endereco;
import clinsistem.b.negocio.entidades.Profissional;

public class RepositorioConvenio {
	
	public LinkedList<Convenio> listarConvenios() throws Exception {
		Statement stmt = null;
		ResultSet rs = null;
		LinkedList<Convenio> lista = new LinkedList<Convenio>();
		
		stmt = ConexaoBD.getInstance().createStatement();
		
		rs = stmt.executeQuery("SELECT * FROM convenio;");
		
		while (rs.next()) {
			lista.add(new Convenio(rs.getString("cnpj"), rs.getString("nome"), rs.getString("telefone1"), rs.getString("telefone2"), rs.getFloat("valor_cobrado"), rs.getString("email")));
		}
		
		return lista;
	}
	
	public boolean existe(String nome) throws Exception {
		Statement stmt = null;
		ResultSet rs = null;

		stmt = ConexaoBD.getInstance().createStatement();

		rs = stmt.executeQuery("SELECT * FROM convenio WHERE nome = '"
				+ nome + "';");
		return rs.next();
	}

	public void cadastrarConvenio(Convenio convenio) throws Exception { 
		Statement stmt = null;
		
		LinkedList<Profissional> medicos;
		
		stmt = ConexaoBD.getInstance().createStatement();
		
		
		
		stmt.execute("INSERT INTO convenio(nome,cnpj,telefone1,telefone2,valor_cobrado,email,logradouro,numero,bairro,cep,complemento,cidade,estado)VALUES ('"+convenio.getNome()+"','"+convenio.getCnpj()+"','"+convenio.getTelefoneFixo()+"','"+convenio.getTelefoneCelular()+"','"+convenio.getEmail()+"','"+convenio.getEndereco().getLogradouro()+"','"+convenio.getEndereco().getNumero()+"','"+convenio.getEndereco().getBairro()+"','"+convenio.getEndereco().getCEP()+"','"+convenio.getEndereco().getComplemento()+"','"+convenio.getEndereco().getCidade()+"','"+convenio.getEndereco().getEstado()+"',);");
	    medicos=convenio.getMedicos();
	    for(int i =0;i < medicos.size();i++){
	    stmt.execute("INSERT INTO profissional_convenio(profissional,convenio)VALUES('"+convenio.getMedicos().get(i).getRegistro()+"','"+convenio.getNome()+"',);");	
	}
	    }
	    public Convenio buscarConvenioNome(String nome) throws Exception {
			Statement stmt = null;
			ResultSet rs = null;
			ResultSet rs1 = null;
			Convenio p = null;
			
			LinkedList<Profissional> medicos = null;
			
			
			
			stmt = ConexaoBD.getInstance().createStatement();

			rs = stmt.executeQuery("SELECT  * FROM convenio WHERE nome LIKE '%"+nome+"%';");
			rs1 = stmt.executeQuery("SELECT  profissional FROM profissional_convenio WHERE nome = '"+nome+"';");
			while(rs1.next()){
				
			//medicos.add(repositorioProfissional.buscarProfissionalRegistro(rs1.getString(1)));
			}
			
				
			if (rs.next()) {
				p= new Convenio(rs.getString("cnpj"), rs.getString("nome"),medicos, new Endereco(rs.getString("logradouro"), rs.getString("numero"), rs.getString("complemento"), rs.getString("bairro"), rs.getString("cep"), rs.getString("cidade"), rs.getString("estado")), rs.getString("telefone1"), rs.getString("telefone2"), rs.getDouble("valor_cobrado"), rs.getString("email") );
			}
	    
			return p;
	    
		
}  
	    public void atualizarConvenio(Convenio convenio) throws Exception {
			Statement stmt = null;
			
			stmt = ConexaoBD.getInstance().createStatement();
			
	stmt.executeUpdate("UPDATE convenio SET telefone1 = '"+convenio.getTelefoneFixo()+"', telefone2 = '"+convenio.getTelefoneCelular()+"', valor_cobrado = '"+convenio.getValorConsulta()+"',email='"+convenio.getEmail()+"', logradouro = '"+convenio.getEndereco().getLogradouro()+"', numero = '"+convenio.getEndereco().getNumero()+"', bairro = '"+convenio.getEndereco().getBairro()+"', cep = '"+convenio.getEndereco().getCEP()+"', complemento = '"+convenio.getEndereco().getComplemento()+"', cidade = '"+convenio.getEndereco().getCidade()+"', estado = '"+convenio.getEndereco().getEstado()+"' WHERE cnpj = '"+convenio.getCnpj()+"';");
		
	    } 
	    	
}